/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pdf;

import Usuario.Usuario;
import Vehiculo.carro;
import Vistas.Gestionvehiculo;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author andres
 */
public class reporteCarro {
    carro Ncarro;
    
    public reporteCarro(carro Carro, Usuario usuario){
        
        
         JOptionPane.showMessageDialog(null, "Archivo pdf generado en el Escritorio:Reporte_Vehicular.pdf ");
        
        
         //Logotipo SAM------------------------------------------------------

         Image LaImagen = this.Logotipo();
        
        //Parrafo Vehiculo------------------------------------------------

        Paragraph ElParrafo = new Paragraph("\tVehiculo: "+Carro.getModelo().toUpperCase()+"  "+Carro.gettipoVehiculo().toUpperCase()+" \n\n\n", FontFactory.getFont(FontFactory.TIMES, 20, Font.ITALIC, BaseColor.BLUE));
        ElParrafo.setAlignment(Element.ALIGN_CENTER);
        
      FileOutputStream archivo = null;
      
        try {
            
            archivo = new FileOutputStream("/home/andres/Escritorio/Reporte_Vehicular.pdf");
            
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Gestionvehiculo.class.getName()).log(Level.SEVERE, null, ex);
        }
        
      Document documento = new Document(PageSize.A4.rotate(),20,20,20,20);
        try {
            
            PdfWriter.getInstance(documento, archivo).setInitialLeading(10);
            documento.addTitle("Vehiculo");
            documento.addAuthor("SRMV - Sistema de Registro de mantenimiento vehicular");
            documento.addCreator("Andres Torres");
           
        } catch (DocumentException ex) {
            Logger.getLogger(Gestionvehiculo.class.getName()).log(Level.SEVERE, null, ex);
        }
      documento.open();
      
        try {
            
         this.CreaCabecera(documento,LaImagen,ElParrafo);
        
        Paragraph Titulo = new Paragraph("\t Datos del Vehiculo "+" \n\n", FontFactory.getFont(FontFactory.TIMES, 18, Font.ITALIC, BaseColor.BLACK)); 
        Titulo.setAlignment(Element.ALIGN_CENTER);
        documento.add(Titulo);
        
        
        
         Paragraph Usuario = new Paragraph("\tUsuario: "+usuario.getNombre()+" " +usuario.getApellido()+" \n\n", FontFactory.getFont(FontFactory.TIMES, 15, Font.ITALIC, BaseColor.RED));
        documento.add(Usuario);
        
        Paragraph serial = new Paragraph("\t 1. Serial del vehiculo: "+Carro.getSerial()+" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(serial);
        
        Paragraph kmtotal = new Paragraph("\t 2. Kilometraje Total: "+Carro.getKilometrajeTotal()+" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(kmtotal);
        Paragraph UltimoAceite = new Paragraph("\t 3. Ultimo Cambio de Aceite: "+Carro.getUltimocambioAceite() +" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(UltimoAceite);
        
        float valor = Carro.getKilometrajeTotal() - Carro.getUltimocambioAceite();
        Paragraph kilometrosrestantes = new Paragraph("\t 4. Kilometraje Restantes: "+valor+" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(kilometrosrestantes);
        
        Paragraph aceiteMotor = new Paragraph("\t 5.Aceite de Motor: "+Carro.getAceiteMotor()+" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(aceiteMotor);
        
        Paragraph año = new Paragraph("\t 6. Año: "+Carro.getAño()+" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(año);
        
        Paragraph gasolina = new Paragraph("\t 7. Gasolina: "+Carro.getGasolina()+" "+"Optanos"+" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(gasolina);
            
        Paragraph Bateria = new Paragraph("\t 8. Marca de la bateria: "+Carro.getMarcaBateria()+" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(Bateria);
        
        Paragraph MattBateria = new Paragraph("\t 9. Tipo de bateria: "+Carro.getLibreMantenimient()+" \n", FontFactory.getFont(FontFactory.TIMES, 12, Font.ITALIC, BaseColor.BLACK));
        documento.add(MattBateria);
        
        } catch (DocumentException ex) {
            Logger.getLogger(Gestionvehiculo.class.getName()).log(Level.SEVERE, null, ex);
        }
        
      documento.close();
              // TODO add your handling code here:
    }

    private Image Logotipo(){
        try {
            
            
            
            URL imgURL = getClass().getResource("/imagenes/idea.jpg");
            Image LaImagen = Image.getInstance(imgURL);
            LaImagen.setAlignment(Image.UNDERLYING);
            LaImagen.scalePercent(35);
            
            return LaImagen;        
        
        }
        catch (BadElementException ex) {
            Logger.getLogger(Gestionvehiculo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (MalformedURLException ex) {
            Logger.getLogger(Gestionvehiculo.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Gestionvehiculo.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;

    }
    
     private void CreaCabecera(Document ElDocumento, Image LaImagen, Paragraph Parrafo){
        try {
            
            ElDocumento.add(LaImagen);
            ElDocumento.add(Parrafo);
            
        } catch (DocumentException ex) {
            Logger.getLogger(Gestionvehiculo.class.getName()).log(Level.SEVERE, null, ex);
        }
        
              
    }
    
}
